package jmine.tec.aom.domain;

/**
 * Common interface for classes that provide means of modifying a collection of {@link Property}.
 * 
 * @author jrenaut
 */
public interface PropertyDefiner extends PropertyProvider {

    /**
     * Attempts to add a new {@link Property} to this {@link PropertyDefiner}.
     * 
     * @param property the {@link Property}
     * @return <code>true</code> if the {@link Property} was added
     */
    boolean addProperty(Property property);

    /**
     * Attempts to remove a {@link Property} from this {@link PropertyDefiner}.
     * 
     * @param property the {@link Property}
     * @return <code>true</code> if the {@link Property} was removed
     */
    boolean removeProperty(Property property);

}
